package com.zenithmind.classroom.pojo.dto;

import com.zenithmind.common.query.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 学习进度查询DTO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "学习进度查询DTO")
public class LearningProgressQueryDTO extends BaseQuery {

    /**
     * 用户ID
     */
    @Schema(description = "用户ID", example = "1234567890")
    private String userId;

    /**
     * 课程ID
     */
    @Schema(description = "课程ID", example = "1234567890")
    private String courseId;

    /**
     * 章节ID
     */
    @Schema(description = "章节ID", example = "1234567890")
    private String chapterId;

    /**
     * 课时ID
     */
    @Schema(description = "课时ID", example = "1234567890")
    private String lessonId;

    /**
     * 学习状态（0-未开始，1-学习中，2-已完成，3-已暂停）
     */
    @Schema(description = "学习状态（0-未开始，1-学习中，2-已完成，3-已暂停）", example = "1")
    private Integer status;

    /**
     * 最小进度百分比
     */
    @Schema(description = "最小进度百分比", example = "0")
    private Integer minProgressPercent;

    /**
     * 最大进度百分比
     */
    @Schema(description = "最大进度百分比", example = "100")
    private Integer maxProgressPercent;

    /**
     * 是否收藏（0-否，1-是）
     */
    @Schema(description = "是否收藏（0-否，1-是）", example = "1")
    private Integer isFavorite;

    /**
     * 学习设备类型（1-PC，2-移动端，3-平板）
     */
    @Schema(description = "学习设备类型（1-PC，2-移动端，3-平板）", example = "1")
    private Integer deviceType;

    /**
     * 学习来源（1-网页，2-APP，3-小程序）
     */
    @Schema(description = "学习来源（1-网页，2-APP，3-小程序）", example = "1")
    private Integer source;

    /**
     * 开始时间
     */
    @Schema(description = "开始时间", example = "2024-01-01 00:00:00")
    private String startTime;

    /**
     * 结束时间
     */
    @Schema(description = "结束时间", example = "2024-12-31 23:59:59")
    private String endTime;
}
